import axios from 'axios'
import { serverUrl } from './const'
import router from "../router/index";
import { ElMessage } from 'element-plus';


const request = axios.create({
  baseURL: serverUrl,  // 注意！！ 这里是全局统一加上了 '/api' 前缀，也就是说所有接口都会加上'/api'前缀在，页面里面写接口的时候就不要加 '/api'了，否则会出现2个'/api'，类似 '/api/api/user'这样的报错，切记！！！
  timeout: 100000,
  withCredentials: true
})

// request 拦截器
// 可以自请求发送前对请求做一些处理
// 比如统一加token，对请求参数统一加密
request.interceptors.request.use(config => {
  // console.log(config,'use');
    config.headers['Content-Type'] = 'application/json;charset=utf-8';
    if (localStorage.getItem('token')) { // 处理刷新时authKey丢失
      config.headers['token-admin'] = localStorage.getItem('token')
    }
    return config
}, error => {
    return Promise.reject(error)
});

// 响应拦截器
// 1.相应上面的请求拦截器的需求
// 2.把上面的请求拦截器的需求全部做到
request.interceptors.response.use(res => {
  // console.log(res,'res');
    setTimeout(() => {
      if(res.data.code == 401) {
        // 后台返回得登录过期，重置登录状态
        ElMessage.warning(res.data.msg)
        localStorage.removeItem('token')
        localStorage.removeItem('operationStatus')
        localStorage.removeItem('menuList')
        localStorage.removeItem('searchInfos')
        router.push({path: '/'})
      }else if(res.data.code == 403 || res.data.code == -1 || res.data.code == 400){
        ElMessage.warning(res.data.msg)
      }
    }, 1000);
    return res
  }, error => {
    return Promise.reject(error)
});


export default request